/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;

import java.math.BigDecimal;
import javax.ejb.Remote;

/**
 *
 * @author Ing. Monica Merlo, Ing. Agustin  Fernandez
 */
@Remote
public interface GestorCertificadoRemote {

     /***
     * Retorna lista con instancias de Certificado cuyo idObra sea igual al
     * parametro idObra.
     * @param idObra
     * @return lista de certificados por obra.
     * Interfaz remota
     */
    public java.util.List verCertificadosObraRemote(int idObra);

     /***
     * Agrega una nueva instancia de Certificado a la base de datos
     * @param nroCertificado
     * @param periodo
     * @param fechaMedicion
     * @param monto
     * @param fondos
     * @param nroOrdenPago
     * @param estado
     * @param idObra
     * @param idEmpresaContratista
     * @return true si el nuevo certificado persistió, false si no persistió
     * Interfaz remota
     */
    public boolean agregarCertificadoRemote(int nroCertificado, String periodo, java.util.Date fechaMedicion, BigDecimal monto,
            String fondos, int nroOrdenPago, String estado, int idObra, int idEmpresaContratista);

    /***
     * Retorna una lista de los nombres de todas las instancias de EstadoCertificado
     * @return lista de los estados de los certificados
      * Interfaz remote
     */
    public java.util.List estadosCertificadoRemote();

     /***
     * Retorna una instancia de tipo EstadoCertificado cuyo nombre coincida
     * con el parametro nombre.
     * @param nombre
     * @return estado del certificado
     * Interfaz remote
     */
    public datos.EstadoCertificado encontrarEstadoCertificadoRemote(String nombre);

     /***
     * Actualiza una instancia de Certificado en la base de datos.
     * @param idCertificado
     * @param nroCertificado
     * @param periodo
     * @param fechaMedicion
     * @param monto
     * @param fondos
     * @param nroOrdenPago
     * @param estado
     * @return true si el certificado fue actualizado con exito, false si no fue actualizado
     * Interfaz remota
     */
    public boolean modificarCertificadoRemote(int idCertificado, int nroCertificado, String periodo, java.util.Date fechaMedicion, BigDecimal monto,
            String fondos, int nroOrdenPago, String estado);

     /***
     * Elimina una instancia de Certificado cuyo id coincida con el parametro idCertificado.
     * @param idCertificado
     * @return true si el certificado fue eliminado con exito, false si no fue eliminado
     * Interfaz remote
     */
    public boolean eliminarCertificadoRemote(int idCertificado);

     /***
     * Retorna el Acumulado Financiero, la suma acumulada del campo financiero parcial,
     * para una Obra en particular cuyo id coincida con el parametro idObra.
     * @param idObra
     * @return la suma acumulada del campo financiero parcial por obra
     * Interfaz remote
     */
    public BigDecimal calcularAcumuladoFinancieroPorObraRemote(int idObra);

    /***
     * Retorna el Acumulado Financiero, la suma acumulada del campo financiero parcial,
     * para una Obra y Certificado en particular cuyos ID coincidan con el parametro idObra
     * y idCertificado respectivamente.
     * @param idCertificado
     * @param idObra
     * @return la suma acumulada del campo financiero parcial por obra y certificado
     * Interfaz remote
     */
    public BigDecimal calcularAcumuladoFinancieroModificarPorObraRemote(int idCertificado, int idObra);
}
